<?php

require_once 'Framework/Controller/Action.php';

/**
 * Гость в системе
 *
 */
class GhomeController extends Framework_Controller_Action
{
    /**
     * Гость
     *
     * @var obj User_Guest
     */
    private $_guest;
    
    const ROOM = 10;
    
    public function init()
    {
        // Если не гость то пшел вон
        if (!$this->session->get('guest_logged_in')) {
            $this->session->set('room_http_referer', $this->getRequest()->getServer('REDIRECT_URL'));

            $this->_redirect('/user/');
        } else {
            $this->view->guest = $this->session->get('guest_logged_in');
        }
        
        try {
            $this->_guest = new User_Guest($this->session->get('guest_id'));
        } catch (Framework_Exception $e) {
            $this->_redirect('/guest/logout/');
        }
    }
    
    /**
     * Список открытых комнат для общения
     *
     */
    /*public function indexAction()
    {
        //Зачищаем гостя в комнатах
        Room::clean($this->session->get('guest_id'));
        $open_rooms = Room::getOpenRooms();
        $this->view->rooms = $open_rooms;
        
        $this->render();
    }*/
    
    /**
     * В комнате
     *
     */
    public function roomAction()
    {
        $room = new Room($this->_getParam(0));
        // Попытка доступа к закрытой комнате
        if (!$room->isUserAccess($this->_guest->getUserId())) {
            $this->_redirect('/index/error/');
        }
        //TODO Можно оптимизировать, добавлять пользователя только при первом заходе.
        $room->addUser($this->_guest);
        $this->session->set('room_id', $room->room_id);
    
        if ($this->getRequest()->getMethod() != 'POST') {
            $page = $this->_getParam(1, 0);
            $smiles = Framework_Registry::isRegistered('smiles') ? Framework_Registry::get('smiles') : true;
            $messages = $room->getRoomMessages(self::ROOM, $page, $paging, $smiles);       
            $this->view->paging    = $paging;
            $this->view->page      = $page;
            $this->view->messages  = $messages;
            $this->view->room_name = $room->room_name;
            $this->view->room_id   = $room->room_id;
        } else {
            $message  = $this->getRequest()->getPost('message');
            $room->addMessage($this->session->get('guest_id'), $message);
            $this->_redirect('/ghome/room/' . $room->room_id);
        }
        
        $this->render();
    }
    
    /**
     * Сообщение для комнаты в которой находится гость
     *
     */
    public function writeAction()
    {
        $this->view->room_id = $this->session->get('room_id');
        
        $this->render();
    }
}